/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Parser.Validador;

import Utilidades.VerificadorStrings;
import Utilidades.StrOp;

/**
 * Verifica si el tag XML leido corresponde a un comentario
 * @author Administrador
 */
public class ValidadorComentario implements IValidador {
    private String str;

    public boolean validar(String str) {
        //Si la variable resultado termina valiendo true, str es un comentario
        boolean resultado = true;
        this.str = str;

        try {
            if (VerificadorStrings.esInicioFin(str, "<!--", "-->") == false) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "<", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, ">", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "!", 1,true) == true) {
                resultado = false;
            }
            else if (validarDobleGuionMedio() == false) {
                resultado = false;
            }

        } catch (Exception e) {
            resultado = false;
        } finally {
            return resultado;
        }
    }

    private boolean validarDobleGuionMedio() {
        char[] aux = StrOp.borrarInicioFin(str, "<!--", "-->").toCharArray();
        boolean guion = false;
        boolean resultado = true;

        for (int i = 0; i < aux.length; i++) {
            char c = aux[i];
            if (c == '-' && guion) {
                resultado = false;
            }
            else if (c == '-' && !guion) {
                guion = true;
            }
            else if (c != '-' && guion) {
                guion = false;
            }
        }
        return resultado;
    }

}
